// 全局前置导航
// 全局设置完动态路由后---在getter 拿取一下 筛选后的routes--在侧边栏组件中--删除写死得 routes计算属性--用mapGetter 获取routes
import router from './router'
import store from './store'

router.beforeEach(async(to, from, next) => {
  // 如果token存在--已登录
  if (store.state.user.token) {
    if (to.path === '/login') {
      next('/')
    } else {
      /*       先判断声明好的userInfo对象内的用户id存在与否
      存在就表明已经获取了用户信息,不用重新获取 */
      if (!store.state.user.userInfo.id) {
        // 获取并保存当前用户信息和权限
        await store.dispatch('user/vuexGetInfo')
        // 筛选当前用户权限
        const route = await store.dispatch('permission/filterRoutes', store.state.user.userPerm)
        console.log('src/permission-18', route)
        // 添加
        router.addRoutes([...route, { path: '*', redirect: '/404', hidden: true }])
        next(to.path)
      }
      next()
    }
  } else {
    // 不存在--没登录
    const whiteList = ['/404', '/login']
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
})
